package com.huawei.hwclouds.lubanops.demo.product.biz.service;

import org.springframework.transaction.annotation.Transactional;

import com.huawei.hwclouds.lubanops.demo.common.biz.AbstractPageQueryRequest;
import com.huawei.hwclouds.lubanops.demo.common.biz.AbstractServiceBase;

/**
 * 所有config服务的service类的基类，主要是对于事务属性的方法增加事务配置 <br>
 *
 * @author y00438022
 * @since 2020年3月3日
 */
public abstract class ConfigBizServiceBase<D, P extends AbstractPageQueryRequest> extends AbstractServiceBase<D, P> {

    /**
     * 增加事务配置，有需要可以集成 <br>
     *
     * @param theDO
     * @author y00438022
     * @since 2020年3月3日
     */
    @Transactional(transactionManager = "productBizTransactionManager", rollbackFor = Exception.class)
    @Override
    public void create(D theDO) {
        getMapper().create(theDO);
    }

    /**
     * 根据主键更新 <br>
     *
     * @param d
     * @return
     * @author y00438022
     * @since 2020年3月3日
     */
    @Transactional(transactionManager = "productBizTransactionManager", rollbackFor = Exception.class)
    @Override
    public Integer update(D d) {
        return getMapper().update(d);
    }

    /**
     * 根据主键删除<br>
     *
     * @param id
     * @return
     * @author y00438022
     * @since 2020年3月3日
     */
    @Transactional(transactionManager = "productBizTransactionManager", rollbackFor = Exception.class)
    @Override
    public int delete(Integer id) {
        return getMapper().delete(id);
    }

    /**
     * 根据主键删除<br>
     *
     * @param id
     * @return
     * @author y00438022
     * @since 2020年3月3日
     */
    @Transactional(transactionManager = "productBizTransactionManager", rollbackFor = Exception.class)
    @Override
    public int delete(Long id) {
        return getMapper().delete(id);
    }

}
